#include "net_comm.h"

int net_comm_logo = 0; // 网络连接标志

int client_socket; // TCP客户端通信对象

void * NET_comm(void * arg)
{
    int ret = 0;
    // 1、创建TCP客户端通信对象(a、买了一部手机)
    client_socket = socket(AF_INET, SOCK_STREAM, 0);
    if(client_socket < 0) {
        perror("创建TCP客户端通信对象失败!\n");
        return NULL;
    }

    // 使套接字sockfd关联的地址在套接字关闭后立即释放
    int on = 1;
    setsockopt(client_socket, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); // 开启端口复用功能

    char ip_arr[128] = {0};
    FILE * fd        = fopen("./my_project/Data/ip_arr.txt", "r");
    if(fd == NULL) {
        printf("ip_arr.txt文件打开失败\n");
        net_comm_logo = 2;
        return NULL;
    }
    fgets(ip_arr, 128, fd);
    printf("ip_arr:%s\n", ip_arr);
    // 3、填写服务端的信息(c、输入女朋友的电话信息)
    // struct sockaddr *addr;                           // 旧地址结构体，已经废弃掉了
    struct sockaddr_in addr;                  // 创建一个服务器地址结构体
    addr.sin_family      = AF_INET;           // 设置地址族为IPv4
    addr.sin_port        = htons(8899);       // 设置服务器的端口号
    addr.sin_addr.s_addr = inet_addr(ip_arr); // 设置服务器的IP地址
    while(1) {
        // 4、链接服务端(d、打电话给女朋友)
        int ret_c = connect(client_socket, (struct sockaddr *)&addr, sizeof(addr));
        if(ret_c < 0) {
            perror("连接服务器失败\n");
            if(ret < 10) {
                ret++;
                sleep(2);
                continue;
            }
            printf("连接服务器失败,请检查服务器是否开启\n"); // 后面改成消息框
            break;
        } else {
            printf("连接结服务器成功!\n");
            net_comm_logo = 1;
            int set= write(client_socket, "reg user", strlen("reg user")); // 发送数据; // 发送数据
            if(set < 0) 
            {
                printf("发送失败\n");
            }
            else
            {
                
                printf("发送成功\n");
            }
            break;
        }
    }

    return NULL;
}